import pygame,os,random
from pygame.locals import *
from Cenario import *
from Fase import *
from Snake import *

pygame.init()

screen = pygame.display.set_mode((600,600))
pygame.display.set_caption('Hipersnake - Cristimas Snake')

class Comida:
    def __init__(self,nome):
        self.nome = nome
        self.imagem_comida1 = pygame.image.load('Imagens' + os.sep + 'estrela_14.png').convert_alpha()         # return a Surface
        self.imagem_comida2 = pygame.image.load('Imagens' + os.sep + 'bengala_natal.png').convert_alpha()
        self.imagem_comida3 = pygame.image.load('Imagens' + os.sep + 'presente-de-natal2.png').convert_alpha()
        self.posicao = (random.randint(0,570), random.randint(0,570))
        self.mapa_comidas = {'Estrela':self.imagem_comida1,'Bengala':self.imagem_comida2,'Presente':self.imagem_comida3}

    def __analisa_cenario(self,Cenario):
        lista_analises = []
        for i in range(len(Cenario.lista_cenarios)):
            if str(Cenario.lista_cenarios[i][0]) == str(Cenario):
                for posicao in Cenario.lista_cenarios[i][1].values()[0]:
                    if ((Cenario.lista_cenarios[i][1].keys()[0]).get_rect(center=(posicao[0]+15,posicao[1]+15))).colliderect(self.mapa_comidas[str(self.nome)].get_rect(center=(self.posicao[0]+10,self.posicao[1]+10))):
                        lista_analises.append(1)
                    else:
                        lista_analises.append(0)
        return lista_analises


    def escolher_posicao(self,Cenario):  
        self.posicao2 = [random.randint(0,570),random.randint(0,570)]
        self.posicao = tuple(self.posicao2)
        for tupla in Cenario.lista_cenarios:
            if str(tupla[0]) == str(Cenario):
                if self.__analisa_cenario(Cenario).count(1) == 0:   # tupla[1] retorna um mapa
                    return self.posicao                        # TEM PROBLEMA AQUI, ELE NAO BLITA NO MESMO PONTO DOS BLOCOS,
                elif self.__analisa_cenario(Cenario).count(1) > 0:                                          # MAS AINDA BLITA EM CIMA DELES!!
                    self.escolher_posicao(Cenario)           
            
    def __escolher_comida(self):
        imagem_comida = self.mapa_comidas[self.nome]
        return imagem_comida

    def aparecer_imagem_comida(self,Cenario):
        screen.blit(self.__escolher_comida(),self.posicao)

    def __str__(self):   
        return self.nome


